<script lang="ts" setup>
import HomePanel from './HomePanel.vue';
import useStore from '@/store';

import { useLazyData } from '@/utils/hooks';
const { home } = useStore()

const target = useLazyData(()=>{
    home.getHotList()
})
  


// const target = ref(null)
// onMounted(()=>{
//   const { stop } = useIntersectionObserver(target.value,([{ isIntersecting}]) =>{
//     // 可见
//     if(isIntersecting) {
//       // 发请求
//       home.getHotList()
//       // 停止监听
//       stop()
//     }
//   })
// })

</script>
<template>
  <div ref="target">
   <HomePanel title="人气推荐" subTitle="人气爆款 不容错过">
    <!-- 动画 -->
  <Transition name="fade">
     <!-- 面板内容 -->
    <ul class="goods-list"  v-if="home.newGoodList.length > 0">
      <li v-for="item in home.hotGoodList" :key="item.id">
        <RouterLink :to="'/product/'+item.id">
          <img
            v-lazy="item.picture"
            alt=""
          />
          <p class="name ellipsis">{{item.title}}</p>
          <p class="price">{{item.alt}}</p>
        </RouterLink>
      </li>
    </ul>
     <div class="home-skeleton" v-else>
        <div
          class="item"
          v-for="i in 4"
          :key="i"
          :style="{ backgroundColor: '#f0f9f4' }"
        >
          <XtxSkeleton bg="#e4e4e4" :width="306" :height="306" animated  fade/>
          <XtxSkeleton bg="#e4e4e4" :width="160" :height="24" animated  fade/>
          <XtxSkeleton bg="#e4e4e4" :width="120" :height="24" animated  fade/>
        </div>
      </div>
   </Transition>
  </HomePanel>
</div>
</template>

<style scoped lang="less">
// 动画
  // fade-enter-active: 从无到有(不可见->可见) 
  // fade-leave-active: 从有有无(可见->不可见) 
  .fade-enter-active, .fade-leave-active{
    transition: all 3s;
  }

  // 从无到有. 它是动画的起点。
  //           终点是fade-enter-to设置的值
  //           但是这个类没有设置，所以终点是默认值
  .fade-enter-from{
    opacity: 0;
  }

 // 从有到无. 它是动画的终点。
  //           起点是fade-leave-from设置的值
  //           但是这个类没有设置，所以起点是默认值
  .fade-leave-to {
    opacity: 0;
  }

// 样式
.goods-list {
  display: flex;
  justify-content: space-between;
  height: 406px;
  li {
    width: 306px;
    height: 406px;
    background-color: #fff;
    // background: #f0f9f4;
    .hoverShadow();
    img {
      width: 306px;
      height: 306px;
    }
    p {
      font-size: 22px;
      padding: 12px 30px 0 30px;
      text-align: center;
    }
    .price {
      color: #999;
      font-size: 16px;
    }
  }

}
// 骨架屏
.home-skeleton {
  width: 1240px;
  height: 406px;
  display: flex;
  justify-content: space-between;
  .item {
    width: 306px;
    .xtx-skeleton ~ .xtx-skeleton {
      display: block;
      margin: 16px auto 0;
    }
  }
}
</style>